#include <sys_head.h>

int main(int argc, char const *argv[])
{
    int pid = fork();
    if (pid == 0) // 子进程
    {
        int i = 0;
        while (i < 100)
        {
            i++;
            // if (i == 3) // 人为制造错误，原本计划循环100次
            // {
            //     break;
            // }
            printf("我是子进程\n");
        }
        if(i != 100)
        {
            return 1;//说明程序非正常退出
        }
    }
    else if (pid > 0) // 父进程
    {
        printf("子进程的ID号为:%d\n", pid);
        int ret = -1;
        while (1)
        {
            waitpid(pid, &ret, WNOHANG);
            if (ret != -1) // 说明waitpid等到了子进程结束，改变了ret的值
            {
                if (ret != 0)
                {
                    printf("子进程非正常推出了，退出码是：%d\n", ret);
                    break;
                }
                else
                {
                    printf("看来子进程结束了,退出码是：%d\n", ret);
                    break;
                }
            }
        }
    }
    return 0;
}
